package br.com.quiz.bean;

import java.util.ArrayList;

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

import org.hibernate.HibernateException;

import br.com.quiz.dao.AbstractDAO;
import br.com.quiz.dao.AlunoDAO;
import br.com.quiz.dao.ProfessorDAO;
import br.com.quiz.domain.Disciplina;
import br.com.quiz.domain.Professor;
import br.com.quiz.util.JSFUtil;

@ManagedBean(name = "MBProfessor")
@ViewScoped
public class ProfessorMB {
	private Professor professor;
	private ArrayList<Professor> professores;
	private ArrayList<Professor> professoresFiltrados;

	private ArrayList<Disciplina> disciplinas;
	private Disciplina disciplina;

	public Disciplina getDisciplina() {
		return disciplina;
	}

	public void setDisciplina(Disciplina disciplina) {
		this.disciplina = disciplina;
	}

	public ArrayList<Disciplina> getDisciplinas() {
		return disciplinas;
	}

	public ArrayList<Professor> getProfessores() {
		return professores;
	}

	public void setProfessores(ArrayList<Professor> professores) {
		this.professores = professores;
	}

	public ArrayList<Professor> getProfessoresFiltrados() {
		return professoresFiltrados;
	}

	public void setProfessoresFiltrados(
			ArrayList<Professor> professoresFiltrados) {
		this.professoresFiltrados = professoresFiltrados;
	}

	public void setDisciplinas(ArrayList<Disciplina> disciplinas) {
		this.disciplinas = disciplinas;
	}

	public Professor getProfessor() {
		return professor;
	}

	public void setProfessor(Professor professor) {
		this.professor = professor;
	}

	@PostConstruct
	public void prepararPesquisa() {

		try {
			professor = new Professor();
			professores = (ArrayList<Professor>) ProfessorDAO.listar();
		} catch (Exception e) {
			e.printStackTrace();
			JSFUtil.adicionarMensagemErro(e.getMessage());
		}
	}

	public void prepararNovo() {
		professor = new Professor();
		professores = (ArrayList<Professor>) ProfessorDAO.listar();
	}

	public void novo() {
		try {
			ProfessorDAO.salvarOuEditarCriptografado( professor );
			professores = (ArrayList<Professor>) ProfessorDAO.listar();
			JSFUtil.adicionarMensagemSucesso("Professor salvo com Sucesso");
		} catch (HibernateException e) {
			JSFUtil.adicionarMensagemErro("Erro ao Inserir professor");
		}
	}

	public void excluir() {
		try {
			AbstractDAO.apagar(professor);
			professores = (ArrayList<Professor>) ProfessorDAO.listar();
			JSFUtil.adicionarMensagemSucesso("Professor Excluido com Sucesso");
		} catch (HibernateException e) {
			JSFUtil.adicionarMensagemErro("Erro ao excluir Professor");
		}

	}

	public void editar() {
		try {
			ProfessorDAO.salvarOuEditarCriptografado( professor );
			professores = (ArrayList<Professor>) ProfessorDAO.listar();
			JSFUtil.adicionarMensagemSucesso("Professor editado com Sucesso");
		} catch (HibernateException e) {
			JSFUtil.adicionarMensagemErro("Erro ao Editar Professor");
		}

	}

}
